package ui; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import bank.Bank; import model.AccountType; import model.Person; import model.PersonsTableModel; /** * Class that is used for creating the panel visible by the person. * * @author Bogdan * */ @SuppressWarnings("serial") public class PersonPanel extends JPanel { private JButton extract = new JButton("Extract money"); private JButton write = new JButton("Add money"); private JButton exit = new JButton("Log out"); private JLabel greetLabel = new JLabel("Welcome !"); private Bank bank; public PersonPanel(LoginController loginController, JFrame frame,Person person) { this.bank = loginController.getBank(); this.setLayout(new BorderLayout()); add(this.greetLabel, BorderLayout.PAGE_START); JPanel bPanel = new JPanel(); bPanel.setLayout(new GridLayout(3, 1)); bPanel.setBackground(Color.GRAY); bPanel.add(this.extract); bPanel.add(this.write); bPanel.add(this.exit); add(bPanel, BorderLayout.EAST); PersonsTableModel personsTableModel = new PersonsTableModel(bank,person); JTable table = new JTable(personsTableModel); table.setPreferredScrollableViewportSize(new Dimension(500, 70)); table.setFillsViewportHeight(true); JScrollPane scrollPane = new JScrollPane(table); add(scrollPane, BorderLayout.CENTER); exit.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { frame.dispose(); } }); extract.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JLabel amountLabel = new JLabel("Amount of money: "); JTextField amount = new JTextField(); Object[] ob = { amountLabel, amount }; int result = JOptionPane.showConfirmDialog(null, ob, "Extracting", JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { if((AccountType)table.getValueAt(table.getSelectedRow(), 3)==AccountType.SPENDING){ long num = (Long)(table.getValueAt(table.getSelectedRow(), 4)) - Long.parseLong(amount.getText()); if(num < 0){ JOptionPane.showMessageDialog(frame, "Not enough money"); } else{ personsTableModel.setValueAt(num, table.getSelectedRow(), 4); JOptionPane.showMessageDialog(frame, "You extracted " + Long.parseLong(amount.getText()) + " lei."); } } else{ JOptionPane.showMessageDialog(frame, "Cannot extract money from saving account."); } } ((PersonsTableModel) table.getModel()).updateModel(person); table.updateUI(); } }); write.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JLabel amountLabel = new JLabel("Amount of money: "); JTextField amount = new JTextField(); Object[] ob = { amountLabel, amount }; int result = JOptionPane.showConfirmDialog(null, ob, "Adding", JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { long num = (Long)(table.getValueAt(table.getSelectedRow(), 4)) + Long.parseLong(amount.getText()); personsTableModel.setValueAt(num, table.getSelectedRow(), 4); JOptionPane.showMessageDialog(frame, "Added " + Long.parseLong(amount.getText()) + " lei to the account " + table.getValueAt(table.getSelectedRow(), 2)); } ((PersonsTableModel) table.getModel()).updateModel(person); table.updateUI(); } }); } public void setBound(Component comp, Rectangle bounds) { comp.setBounds(bounds); } }